/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ManagedBeans;

import ComponenteDatos.IgvFacadeLocal;
import ComponenteEntidad.Igv;
import ComponenteEntidad.Igv;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.primefaces.event.SelectEvent;
import org.primefaces.event.UnselectEvent;

/**
 *
 * @author Noemi
 */
@ManagedBean
@SessionScoped
public class ManagedBeanIgv implements Serializable{

    @EJB
    private IgvFacadeLocal igvFacade;
    private Igv objetoIgv;
    private Igv objetoIgvCrear;
    private List<Igv> lista;
    private List<SelectItem> objetoItems = new LinkedList<SelectItem>();
    private HashMap<Integer, Igv> myobjeto = new HashMap<Integer, Igv>();

    public ManagedBeanIgv() {
        objetoIgv = new Igv();
        objetoIgv.setIdIGV(1);
        lista = new LinkedList<Igv>();
        objetoIgvCrear = new Igv();
        objetoIgvCrear.setIgvNombre("");
        objetoIgvCrear.setIgvValor(new BigDecimal("0.0"));
        objetoIgvCrear.setIgvEstado(true);


    }

    public Igv getObjetoIgv() {
        return objetoIgv;
    }

    public Igv getObjetoIgv(int id) {
        return (Igv) myobjeto.get(id);
    }

    public void setObjetoIgv(Igv objetoIgv) {
        this.objetoIgv = objetoIgv;
    }

    public Igv getObjetoIgvCrear() {
        return objetoIgvCrear;
    }

    public void setObjetoIgvCrear(Igv objetoIgvCrear) {
        this.objetoIgvCrear = objetoIgvCrear;
    }

    public List<Igv> getLista() {
        lista = new LinkedList<Igv>();
        List<Igv> listaTemporal = new LinkedList<Igv>();
        listaTemporal = igvFacade.findAll();
        for (int i = listaTemporal.size() - 1; i >= 0; i--) {
            if (listaTemporal.get(i).getIgvEstado() == true) {
                lista.add(listaTemporal.get(i));
            }
        }
        return lista;
    }

    public void setLista(List<Igv> lista) {
        this.lista = lista;
    }

    public List<SelectItem> getObjetoItems() {
        lista = new ArrayList<Igv>();
        objetoItems = new LinkedList<SelectItem>();
        lista = igvFacade.findAll();
        for (Igv p : lista) {
          myobjeto.put(p.getIdIGV(), p);
            objetoItems.add(new SelectItem(p, p.getIgvNombre()));
        }
        return objetoItems;
    }
    
    public List<SelectItem> getIGVActual() {
       lista = new ArrayList<Igv>();
        objetoItems = new LinkedList<SelectItem>();
        lista = igvFacade.findAll();
        for (Igv p : lista) {
            if(p.getIgvEstado()==true){
                myobjeto.put(p.getIdIGV(), p);
                objetoItems.add(new SelectItem(p, p.getIgvNombre()));
            }
        }
        return objetoItems;
    }

    public void setObjetoItems(List<SelectItem> objetoItems) {
        this.objetoItems = objetoItems;
    }

    public HashMap<Integer, Igv> getMyobjeto() {
        return myobjeto;
    }

    public void setMyobjeto(HashMap<Integer, Igv> myobjeto) {
        this.myobjeto = myobjeto;
    }

    public void insertar() {
        try {
            if (!verificarSiexiste(objetoIgvCrear.getIgvNombre())) {
                objetoIgvCrear.setIgvEstado(true);

                igvFacade.create(objetoIgvCrear);
                FacesMessage msg = new FacesMessage("Informacion", "Registro Ingresado");
                FacesContext.getCurrentInstance().addMessage(null, msg);
                objetoIgvCrear = new Igv();
            } else {
                FacesMessage msg = new FacesMessage("Informacion", "Ya Existe Igv");
                FacesContext.getCurrentInstance().addMessage(null, msg);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void editar() {
        try {
            igvFacade.edit(objetoIgv);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void eliminar() {
        try {
            objetoIgv.setIgvEstado(false);
            igvFacade.edit(objetoIgv);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void onRowSelect(SelectEvent event) {
        FacesMessage msg = new FacesMessage("Igv Seleccionado", ((Igv) event.getObject()).getIdIGV().toString());
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }

    public void onRowUnselect(UnselectEvent event) {
        FacesMessage msg = new FacesMessage("Igv No seleccionado", ((Igv) event.getObject()).getIdIGV().toString());

        FacesContext.getCurrentInstance().addMessage(null, msg);
    }

    public boolean verificarSiexiste(String desc) {
        boolean existe = false;
        lista = new LinkedList<Igv>();
        List<Igv> listaTemporal = new LinkedList<Igv>();
        listaTemporal = igvFacade.findAll();
        for (int i = listaTemporal.size() - 1; i >= 0; i--) {
            if (listaTemporal.get(i).getIgvNombre().equalsIgnoreCase(desc) && listaTemporal.get(i).getIgvEstado() == true) {
                existe = true;
            }
        }

        return existe;
    }
}
